Заполните массив n
× n следующим образом: на
побочной диагонали стоят нули, выше диагонали двойки, ниже единицы.
Вход. Одно натуральное число n (n ≤ 20).
Выход. Выведите массив, заполненный по указанному
правилу.
Пример
входа |
Пример
выхода |
3 |
220 201 011 |
массивы
Анализ алгоритма
Заполняем двумерный массив при помощи двойного цикла как
указано в задаче.
Ячейка (i, j)
лежит:
·
на побочной диагонали, если i + j = n – 1;
·
ниже побочной диагонали, если i + j > n – 1;
·
выше побочной диагонали, если i + j < n – 1;
Реализация алгоритма
Объявим рабочий
двумерный массив.
#define MAX 30
int m[MAX][MAX];
Читаем входные
данные. Заполняем массив.
scanf("%d",&n);
for(i = 0; i < n; i++)
for(j = 0; j < n; j++)
if (i + j ==
n - 1) m[i][j] = 0; else
if (i + j
< n - 1) m[i][j] = 2; else m[i][j] = 1;
Выводим двумерный массив.
for(i = 0; i < n; i++)
{
for(j = 0; j
< n; j++)
printf("%d",m[i][j]);
printf("\n");
}
#include <stdio.h>
int **m;
int i, j, n;
int main(void)
{
scanf("%d", &n);
m = new int* [n];
for (i = 0; i < n; i++)
m[i] = new int[n];
for (i = 0; i < n; i++)
for (j = 0; j < n; j++)
if (i + j == n - 1) m[i][j]
= 0; else
if (i + j < n - 1) m[i][j] = 2; else m[i][j] = 1;
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
printf("%d", m[i][j]);
printf("\n");
}
delete[] m;
return 0;
}
#include <stdio.h>
#include <malloc.h>
int **m;
int i, j, n;
int main(void)
{
scanf("%d", &n);
m = (int**)calloc(n, sizeof(int*));
for (i = 0; i < n; i++)
m[i]
= (int*)calloc(n, sizeof(int));
for (i = 0; i < n; i++)
for (j = 0; j < n; j++)
if (i + j == n - 1) m[i][j]
= 0; else
if (i + j < n - 1) m[i][j] = 2; else m[i][j] = 1;
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
printf("%d", m[i][j]);
printf("\n");
}
for (i = 0; i < n; i++)
free(m[i]);
free(m);
return 0;
}
Java реализация
import java.util.*;
public class Main
{
public static void
main(String[] args)
{
Scanner con = new
Scanner(System.in);
int n = con.nextInt();
int m[][]
= new int[n][n];
for(int i = 0;
i < n; i++)
for(int j = 0;
j < n; j++)
if (i + j == n - 1)
m[i][j] =
0; else
if (i + j <
n - 1) m[i][j] =
2; else m[i][j] =
1;
for(int i = 0;
i < n; i++)
{
for(int j = 0;
j < n; j++)
System.out.print(m[i][j]);
System.out.println();
}
con.close();
}
}
Java реализация – двумерный ArrayList
import java.util.*;
public class Main
{
public static void
main(String[] args)
{
Scanner con = new
Scanner(System.in);
int n = con.nextInt();
ArrayList<ArrayList<Integer>> m =
new
ArrayList<ArrayList<Integer>>();
for(int i = 0;
i < n; i++)
m.add(new
ArrayList<Integer>());
for(int i = 0;
i < n; i++)
for(int j = 0;
j < n; j++)
if (i + j == n - 1)
m.get(i).add(0); else
if (i + j <
n - 1) m.get(i).add(2);
else m.get(i).add(1);
for(int i = 0;
i < n; i++)
{
for(int j = 0;
j < n; j++)
System.out.print(m.get(i).get(j));
System.out.println();
}
con.close();
}
}
Java реализация – массив ArrayList
import java.util.*;
public class Main
{
public static void
main(String[] args)
{
Scanner con = new
Scanner(System.in);
int n = con.nextInt();
ArrayList<Integer>[] m = new
ArrayList[n];
for(int i = 0;
i < n; i++)
m[i] = new
ArrayList<Integer>();
for(int i = 0;
i < n; i++)
for(int j = 0;
j < n; j++)
if (i + j == n - 1)
m[i].add(0); else
if (i + j <
n - 1) m[i].add(2);
else m[i].add(1);
for(int i = 0;
i < n; i++)
{
for(int j = 0;
j < n; j++)
System.out.print(m[i].get(j));
System.out.println();
}
con.close();
}
}
Python реализация
n = int(input())
def char(i, j):
if i < j:
return '2'
if i == j:
return '0'
return '1'
for i in range(n):
print (''.join(reversed([char(i,j) for j in
range(n)])))
Python реализация – построение матрицы
n = int(input())
def char(i, j):
if i + j < n - 1:
return '2'
elif i + j ==
n - 1:
return '0'
else: return '1'
a = []
for i in range(n):
a.append(''.join([char(i,j) for j in range(n)]))
for i in range(n):
print(a[i])